fix: DualShock4 and DualSense improvements - #94
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #94 +/- ##
==========================================
+ Coverage 75.23% 75.27% +0.04%
==========================================
Files 34 34
Lines 8091 8105 +14
Branches 3030 3032 +2
==========================================
+ Hits 6087 6101 +14
+ Misses 1467 1446 -21
- Partials 537 558 +21
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 1 file with indirect coverage changes Continue to review full report in Codecov by Harness.
|
|
As a small note: you might want to use Bluetooth as the default profile type for DualShock4 as well as it's using the same EDIT: Did a quick test with ba53378 applied. Result is looking a lot better for the gyro but there's still noise spikes that cause the calibration to fail before it can finish. I know it's still a draft and you're working on it but I wanted to let you know that you're already getting a lot closer to solving this. |
780c758 to
b7cd9a1
Compare
b7cd9a1 to
91365cf
Compare
|
@Kishi85 thanks! I was going to ping you after I had time to test this, but you can probably test everything on the Linux side faster than me. I added some adjustments for DS4 as well a tweak that may fix the gyro spikes. I probably should have tested this better in the first place, but I guess I overlooked the gyro stuff (as I normally prefer the Xbox pads). I'm assuming Moonlight Android doesn't support the gyro and probably just QT does? If so I'll need to find a better way to test this. |
I'll test the latest commit first thing tomorrow and give you feedback. Moonlight-Android does support the gyro but IIRC there's a config option that needs to be enabled for gyro data to be sent to Sunshine. |
|
I must be blind because I don't see any such option with the DualSense connected to the Nvidia Shield. I see something about it in the code though. https://github.com/moonlight-stream/moonlight-android/blob/f10085f552b367cf7203007693d91c322a0a2936/app/src/main/java/com/limelight/preferences/StreamSettings.java#L304 Edit: Gyro is still noisy, looking into it more. Edit 2: Confirmed calibration works in CachyOS host using Moonlight QT in LizardByte/Sunshine#5531 Also discovered that rumble starts working only after opening the calibration in steam, even if rumble is already on before opening the calibration. That's probably a steam bug I guess. Edit 3: DS4 seems to be working just as well (now). This needed some additional tweaks though in 0c38b9f |
DualShock 4 Bluetooth input reports now set the HID-present header bit (0x80) while keeping existing BT framing and CRC behavior. This enables HIDAPI/SDL consumers to accept live input after hotplug on Linux. Updated report and Linux consumer tests to assert the new behavior, and refreshed platform-support docs to describe the BT report contract and unchanged transport boundaries.
|
Might require a newer Android base version that the Shield does not have? Like Android 14 is required for rumble with Bluetooth controllers? Not sure which Android version the Shield currently ships. On my phone (Pixel with Android 17) those options show up:
On my Chromecast wiith GoogleTV (Android 14) I've only got the first option available but that's to be expected as that device does not have a gyro built-in.
Gyro is now working fine for me as well with this PR and LizardByte/Sunshine#5531 applied. Not sure about rumble not working instantly for you but on my end it is picked up and working upon connecting. Another additional tool that could be very useful for further development and testing (without having to open Steam's controller settings which could fix things that are otherwise broken, like rumble seems to be on your machine): https://store.steampowered.com/app/2104320/ToS_Gamepad_Tester/ |




Description
Screenshot
Issues Fixed or Closed
Roadmap Issues
Type of Change
Checklist
AI Usage
See our AI usage policy.